Versi 1
| Field | Isi |
|---|---|
| Dokumen ID | VBS-STK-006 |
| Deskripsi | Penyesuaian stok: mengoreksi stok barang di cabang dengan menambah (qty lebih) atau mengurangi (qty kurang) kuantitas, dibebankan ke akun beban, dengan cetak invoice dan buka kembali ke draft untuk koreksi |
| Nomor Revisi | 1 |
| Tanggal | 2026-10-04 |
| Keterangan | Dokumentasi baseline dari dokumentasi fitur demo dan kode FE |
1. Ringkasan
a. In scope
- User melihat daftar invoice penyesuaian stok (nomor invoice, tanggal, cabang, status)
- User mencari nomor invoice serta memfilter periode tanggal invoice dan barang
- User membuat invoice penyesuaian stok: nomor invoice otomatis atau manual, tanggal, lokasi (opsional), cabang, keterangan, cluster, akun beban, serta baris barang dengan qty kurang atau qty lebih, satuan, dan keterangan baris
- Penyesuaian langsung tersimpan final dan mengubah stok cabang
- User berwenang membuka kembali invoice ke draft, lalu mengubah atau menghapusnya
- User melihat detail penyesuaian dan mencetak invoice
b. Catatan
c. Kesimpulan
- [FE] -
- [BE] -
2. Functional Requirement
| Kode | Deskripsi |
|---|---|
| FR-01 | Sistem menampilkan daftar invoice penyesuaian stok dengan pagination, pencarian nomor invoice, dan filter periode serta barang |
| FR-02 | Sistem membatasi daftar ke invoice milik user sendiri jika user tidak punya hak akses lihat semua user |
| FR-03 | User dapat membuat invoice penyesuaian stok dengan cabang, akun beban, dan minimal satu baris barang |
| FR-04 | Setiap baris wajib memiliki salah satu dari qty kurang atau qty lebih minimal 0,1 |
| FR-05 | Sistem memvalidasi tanggal, cabang, akun beban wajib, barang tidak duplikat, dan satuan wajib |
| FR-06 | Penyesuaian disimpan sebagai transaksi final yang menambah atau mengurangi stok |
| FR-07 | User berwenang dapat mengubah invoice final kembali ke draft |
| FR-08 | User dapat mengubah dan menghapus invoice draft |
| FR-09 | User dapat melihat detail dan mencetak invoice penyesuaian stok |
3. Use Case List
| Kode | Deskripsi |
|---|---|
| UC-01 | Melihat dan memfilter daftar penyesuaian stok |
| UC-02 | Membuat invoice penyesuaian stok (tambah / kurang stok) |
| UC-03 | Membuka kembali (unlock) invoice penyesuaian ke draft |
| UC-04 | Mengubah invoice penyesuaian stok draft |
| UC-05 | Menghapus invoice penyesuaian stok draft |
| UC-06 | Melihat detail dan mencetak invoice penyesuaian stok |
4. Use Case Scenario
UC-01 : Melihat dan memfilter daftar penyesuaian stok
| Aktor | User brand dengan hak akses penyesuaian stok |
| Deskripsi | User melihat daftar penyesuaian stok dan menyaringnya |
| Prekondisi | User sudah login di brand aktif |
| Alur utama | 1. User membuka halaman Penyesuaian Stok. 2. Sistem menampilkan daftar (nomor invoice, tanggal, cabang, status). 3. User mengetik nomor invoice, atau memilih periode tanggal invoice dan barang di Filter. 4. Sistem memuat ulang daftar. |
| Alur negatif | - Jika gagal memuat, daftar dikosongkan. |
| Bisnis rule | - Daftar hanya memuat transaksi bermodul Penyesuaian Stok (transaksi Pemakaian memakai data yang sama tapi dipisah per modul). - User tanpa hak akses lihat semua user hanya melihat invoice miliknya. |
| Postkondisi | Daftar penyesuaian sesuai filter tampil |
| Trigger | User membuka halaman Penyesuaian Stok |
| Kode FR | FR-01 FR-02 |
UC-02 : Membuat invoice penyesuaian stok (tambah / kurang stok)
| Aktor | User brand dengan hak akses basic penyesuaian stok |
| Deskripsi | User mengoreksi saldo stok barang di cabang |
| Prekondisi | Master cabang, barang, dan akun perkiraan tersedia |
| Alur utama | 1. User klik Buat Invoice. 2. User mengisi nomor invoice (otomatis / manual), tanggal, lokasi, cabang, keterangan, cluster, dan akun beban. 3. User menambah baris barang lalu mengisi qty kurang (mengurangi stok) atau qty lebih (menambah stok), satuan, dan keterangan. 4. User klik Simpan. 5. Sistem menyimpan invoice dan kembali ke daftar. |
| Alur negatif | - Jika ada field wajib kosong, muncul notifikasi "Oops ada data yang kosong!". - Jika menambah baris saat baris sebelumnya belum lengkap, muncul peringatan "Nama Barang, Qty dan Satuan Tidak Boleh Kosong!". - Jika cabang kosong, muncul pesan "Cabang tidak boleh kosong". - Jika server gagal, muncul notifikasi error. |
| Bisnis rule | - Satu baris hanya mengirim salah satu: qty kurang jika diisi, selain itu qty lebih. - Qty minimal 0,1 pada kolom yang diisi, disimpan dalam satuan terkecil. - Akun beban wajib, dipilih dari akun dengan awalan nomor 13, 4, 5, 6, 7, 8, 9. - Barang yang sama tidak boleh dipilih dua kali. - Invoice langsung final. |
| Postkondisi | Notifikasi "Berhasil buat Penyesuaian Stok Barang", stok cabang terkoreksi |
| Trigger | User klik Simpan |
| Kode FR | FR-03 FR-04 FR-05 FR-06 |
UC-03 : Membuka kembali (unlock) invoice penyesuaian ke draft
| Aktor | User brand dengan hak akses draft penyesuaian stok |
| Deskripsi | User mengembalikan invoice final ke draft agar dapat dikoreksi |
| Prekondisi | Invoice final |
| Alur utama | 1. User klik "Ubah ke Simpan Draft" dari daftar atau halaman lihat. 2. Sistem membuka kunci invoice. 3. Status berubah menjadi Draft. |
| Alur negatif | - Jika server menolak, muncul notifikasi error. |
| Bisnis rule | - Butuh hak akses #can-draft dan hak draft pada #penyesuaian-stok. |
| Postkondisi | Notifikasi "Berhasil Ubah ke Simpan Draft Invoice (nomor)" |
| Trigger | User klik Ubah ke Simpan Draft |
| Kode FR | FR-07 |
UC-04 : Mengubah invoice penyesuaian stok draft
| Aktor | User brand dengan hak akses basic penyesuaian stok |
| Deskripsi | User memperbaiki invoice penyesuaian yang sudah dibuka ke draft |
| Prekondisi | Invoice draft |
| Alur utama | 1. User klik Edit. 2. Sistem memuat detail invoice dan baris. 3. User mengubah informasi atau baris. 4. User klik Simpan. 5. Sistem memperbarui invoice dan menyimpannya final kembali. |
| Alur negatif | - Jika invoice tidak ditemukan, user dikembalikan ke daftar. - Validasi baris sama dengan UC-02. |
| Bisnis rule | - Baris yang dihapus dikirim dengan penanda deleted. |
| Postkondisi | Invoice terupdate dan final kembali |
| Trigger | User klik Edit |
| Kode FR | FR-04 FR-08 |
UC-05 : Menghapus invoice penyesuaian stok draft
| Aktor | User brand dengan hak akses basic penyesuaian stok |
| Deskripsi | User menghapus invoice penyesuaian yang masih draft |
| Prekondisi | Invoice draft |
| Alur utama | 1. User klik Hapus. 2. Sistem menghapus invoice. 3. Daftar dimuat ulang. |
| Alur negatif | - Jika server gagal, muncul notifikasi error. |
| Bisnis rule | - Hapus hanya untuk invoice draft. |
| Postkondisi | Notifikasi "Berhasil Hapus Invoice (nomor)" |
| Trigger | User klik Hapus |
| Kode FR | FR-08 |
UC-06 : Melihat detail dan mencetak invoice penyesuaian stok
| Aktor | User brand dengan hak akses view / reprint penyesuaian stok |
| Deskripsi | User melihat isi penyesuaian dan mencetak invoicenya |
| Prekondisi | Invoice ada |
| Alur utama | 1. User klik Lihat. 2. Sistem menampilkan informasi invoice dan baris barang (qty kurang / qty lebih). 3. User klik Cetak Invoice. 4. Sistem menandai invoice sudah dicetak lalu mencetak dengan kop surat. |
| Alur negatif | - Jika gagal memuat atau menyiapkan cetak, muncul notifikasi error. |
| Bisnis rule | - Cetak mengikuti hak akses reprint. |
| Postkondisi | Detail tampil atau invoice tercetak |
| Trigger | User klik Lihat / Cetak Invoice |
| Kode FR | FR-09 |
5. Data Flow Diagram
DFD-01 — Alur data penyesuaian stok
6. Sequence Diagram
SD-01 — UC-01 : Melihat dan memfilter daftar penyesuaian stok
SD-02 — UC-02 : Membuat invoice penyesuaian stok (tambah / kurang stok)
SD-03 — UC-03 : Membuka kembali (unlock) invoice penyesuaian ke draft
SD-04 — UC-04 : Mengubah invoice penyesuaian stok draft
SD-05 — UC-05 : Menghapus invoice penyesuaian stok draft
SD-06 — UC-06 : Melihat detail dan mencetak invoice penyesuaian stok
7. Table Schema
8. API Schema
| Endpoint | Status | Perubahan |
|---|---|---|
GET /invoice-penyesuaian-stok | existing | - |
GET /invoice-penyesuaian-stok/:id | existing | - |
POST /invoice-penyesuaian-stok | existing | - |
PUT /invoice-penyesuaian-stok/:id | existing | - |
PUT /invoice-penyesuaian-stok/invoice-only/:id | existing | - |
PUT /invoice-penyesuaian-stok/unlock/:id | existing | - |
DELETE /invoice-penyesuaian-stok/:id | existing | - |
GET /rekening | existing | - |